#include <unistd.h>
#include <sys/wait.h>
#include <iostream>
#include "ColaConcurrente.h"

typedef struct MSJ{

	char codigo;

	char buffer[250];

}MSJ;

int main(){

	ColaConcurrente<MSJ> *c = new ColaConcurrente<MSJ>();

	int pid = fork();

	if(pid == 0){

		char leido;

		do{
			
			std::cout << "Proceso 1: Ingrese datos para agregar a la cola: \n";

			std::cin >> leido;

			std::cout << "Proceso 1: Agrego '" << leido << "' a la cola.\n";

			MSJ m;
			m.codigo = leido;

			c->push(m);
			
		}while(leido != 'q');

		std::cout << "Proceso 1: Sale.\n";
		return 0;
	}

	MSJ leido;

	do{
		leido = c->pop();
		std::cout << "Proceso 2: Leo '" << leido.codigo << "'\n";
	}while(leido.codigo != 'q');

	std::cout << "Proceso 2: Saliendo...\n";
	int st;
	wait(&st);
	delete c;
	return 0;
}

